﻿Imports LomaVerde.DataAccess
Imports LomaVerde.Model
Imports LomaVerde.Utils

Class frmBandejasSearchEdit



    Const Col_IdBandeja As Integer = 3

    Dim _Bandeja As Bandeja
    Dim ListaBandejas As List(Of Bandeja)
    Dim _BandejaRepository As BandejaRepository

    Dim EditandoRegistro As Boolean = True
    Dim _Operacion As Operacion

    Private Sub frmLocalidadSearchEdit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'ocultar el panel con el detalle
        Try
            _BandejaRepository = New BandejaRepository()

            AsignarColores()

            OcultarPanelDatos()

            CargarGrilla()

            InicializarControles()

            CargarImagenes()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub frmSocioEdit_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Select Case e.KeyCode
            Case Keys.Enter
                SendKeys.Send("{TAB}")
            Case Keys.Escape
                'si se esta editando un registro preguntar si se quiere salir
                If MsgBox("¿ Cancelar la edición ?", MsgBoxStyle.YesNo, "Cancelar") = MsgBoxResult.Yes Then
                    Me.Close() 'cerrar el formulario
                End If
        End Select
    End Sub

    'asignar los colores a los controles
    Private Sub AsignarColores()
        'colores del titulo
        picHeaderBackground.BackColor = Utils.Colores.Common_LabelHeader_BackColor
        picHeader.BackColor = Utils.Colores.Common_LabelHeader_BackColor

        lblHeader.ForeColor = Utils.Colores.Common_LabelHeader_ForeColor
        lblHeader.BackColor = Utils.Colores.Common_LabelHeader_BackColor
        'colores del toolstrip
        ts.BackColor = Utils.Colores.Common_ToolStrip_BackColor
        tsbNuevo.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbEditar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbEliminar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbSeleccionar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbCerrar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        'colores de la grilla
        gridListado.Styles.Fixed.BackColor = Utils.Colores.Common_Grid_Fixed_Backcolor
        gridListado.Styles.Fixed.ForeColor = Utils.Colores.Common_Grid_Fixed_ForeColor
        gridListado.Styles.Alternate.BackColor = Utils.Colores.Common_Grid_Alternate_Backcolor
    End Sub

    Sub CargarImagenes()
        picHeader.Image = My.Resources.Bandeja_32.ToBitmap()
        Me.Icon = My.Resources.Bandeja_16
    End Sub

    Private Sub Nuevo()
        MostrarPanelDatos()
        _Operacion = Operacion.Add
    End Sub

    Private Sub Editar()

        _Operacion = Operacion.Edit

        _Bandeja = FilaGrillaSeleccionada()

        txtTipoBandeja.Text = _Bandeja.Tipo
        txtCapacidad.Text = _Bandeja.Capacidad
        txtCosto.Text = _Bandeja.Costo

        MostrarPanelDatos()
        LimparControles()
        CargarGrilla()

    End Sub

    Sub InicializarControles()
        Try

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub CargarGrilla()

        ListaBandejas = _BandejaRepository.GetItems()

        LimpiarGrilla()
        'si hay registros => cargar la grilla
        If ListaBandejas.Count > 0 Then
            'para cada elemento en la lista, agregar en la grilla
            gridListado.BeginUpdate()
            For Each _Bandeja_loop In ListaBandejas

                gridListado.AddItem(_Bandeja_loop.Tipo & vbTab & _
                                    _Bandeja_loop.Capacidad & vbTab & _
                                    _Bandeja_loop.Costo & vbTab & _
                                    _Bandeja_loop.IdBandeja)
            Next
            gridListado.EndUpdate()
        End If

    End Sub

    Private Sub Guardar()

        If String.IsNullOrEmpty(txtTipoBandeja.Text) Then
            MsgBox("Ingrese el Tipo de Bandeja", MsgBoxStyle.OkOnly)
            Return
        End If

        If String.IsNullOrEmpty(txtCapacidad.Text) Then
            MsgBox("Ingrese la Capacidad de la Bandeja", MsgBoxStyle.OkOnly)
            Return
        End If

        If String.IsNullOrEmpty(txtCosto.Text) Then
            MsgBox("Ingrese la Capacidad de la Bandeja", MsgBoxStyle.OkOnly)
            Return
        End If

        If _Operacion = Operacion.Add Then
            _Bandeja = New Bandeja()
        End If

        With _Bandeja
            .Tipo = txtTipoBandeja.Text
            .Capacidad = CDbl(txtCapacidad.Text)
            .Costo = CDbl(txtCosto.Text)
        End With

        Try
            _BandejaRepository.Save(_Bandeja)
            CargarGrilla()
            LimparControles()
            OcultarPanelDatos()
        Catch ex As Exception
            MsgBox("Se Produjo un error al Guardar el Banco")
        End Try

    End Sub

    Private Sub Eliminar()

        _Bandeja = FilaGrillaSeleccionada()

        If IsNothing(_Bandeja) Then
            MsgBox("Seleccione un Registro para Eliminar", MsgBoxStyle.OkOnly)
            Return
        End If

        If (MsgBox("¿Desea Eliminar la Bandeja " + _Bandeja.Tipo + "?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then
            _BandejaRepository.Delete(_Bandeja)
        End If

        CargarGrilla()

    End Sub

    'devuelve un string con la columna ID del registro seleccionado
    Private Function FilaGrillaSeleccionada() As Bandeja

        Dim bandeja As Bandeja
        'si no hay fila seleccionada => salir
        If gridListado.Row <= 0 Then
            Return Nothing
        End If
        'obtener el ID
        Dim id As Integer = gridListado(gridListado.Row, Col_IdBandeja)
        'si es vacio => salir
        If id = 0 Then
            Return Nothing
        End If
        'si hay un valor => devolver el string con el ID
        bandeja = _BandejaRepository.GetItem(id)
        Return bandeja
    End Function


    'limpiar la grilla
    Private Sub LimpiarGrilla()
        'limpiar la grilla
        gridListado.Rows.Count = 1
    End Sub

    Private Sub LimparControles()

        txtTipoBandeja.Text = String.Empty
    End Sub
    'mostrar el panel con los controles para edicion de la entidad
    Private Sub MostrarPanelDatos()
        'mostrar el panel de datos
        panelDatos.Visible = True
        'ocultar el panel con la grilla
        panelGrilla.Enabled = False

    End Sub

    'ocultar el panel con los controles para edicion de la entidad
    Private Sub OcultarPanelDatos()
        'ocultar el panel de datos
        panelDatos.Visible = False
        'mostrar el panel con la grilla
        panelGrilla.Enabled = True

    End Sub


    Private Sub tsbNuevo_Click(sender As Object, e As EventArgs) Handles tsbNuevo.Click
        Nuevo()
    End Sub

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        OcultarPanelDatos()
    End Sub

    Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
        Guardar()
    End Sub

    Private Sub tsbEditar_Click(sender As Object, e As EventArgs) Handles tsbEditar.Click
        Editar()
    End Sub

    Private Sub tsbEliminar_Click(sender As Object, e As EventArgs) Handles tsbEliminar.Click
        Eliminar()
    End Sub
End Class